package docmanager.business.objects;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import bf.DataAccess;

public class Sector extends BusinessObject {

	private String descripcion;
	
	public Sector(int id, String descripcion) {
        this.id = id;
        this.descripcion = descripcion;
    }
    
	public Sector(String descripcion)
	{
		this.id = -1;
		this.descripcion = descripcion;
	}
	
    public Sector(Connection conn, int id, String descripcion) {
        this.id = id;
        this.descripcion = descripcion;
        this.conn = conn;
    }
    
    /**
     * Recibe una conexion y la deja abierta. Sirve para transacciones.
     * @param id
     * @param conn
     * @throws SQLException 
     */    
    public Sector(Connection conn, int id) throws SQLException {
      String query = "SELECT id,descripcion FROM sectores WHERE id='" + id + "'";
      ResultSet rs = DataAccess.selectQueryStatic(conn, query);
      rs.next();
      this.id = rs.getInt("id");
      this.descripcion = rs.getString("descripcion");
      this.conn = conn;
    }
    
    public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
    public void guardarNuevo(Connection conn) throws SQLException {
    	//String query = "INSERT INTO sectores (id, descripcion) VALUES('" + id + "','" + descripcion +"')";
    	String query = "INSERT INTO sectores (descripcion) VALUES('" + descripcion +"')";
    	DataAccess.dmlQueryStatic(conn,query);        
    }
    
    public void modificar(Connection conn) throws SQLException {
       String query = "UPDATE sectores SET descripcion='" + this.getDescripcion() + "' WHERE id=" + this.getId();
       DataAccess.dmlQueryStatic(conn,query);        
    }

    public static boolean existeSector(Connection conn, int id, String descripcion) throws SQLException {
    	String query = "SELECT id, descripcion from sectores WHERE id=" + id + " AND descripcion='" + descripcion + "'";
    	return DataAccess.existenceQueryStatic(conn, query);
    }
    
    public static boolean existeSector(Connection conn, int id) throws SQLException {
    	String query = "SELECT id, descripcion from sectores WHERE id='" + id + "'";
    	return DataAccess.existenceQueryStatic(conn, query);
    }
    
    public static boolean existeSector(Connection conn, String descripcion) throws SQLException {
    	String query = "SELECT id from sectores WHERE descripcion='" + descripcion + "'";
    	return DataAccess.existenceQueryStatic(conn, query);
    }
    
    public static List<Sector> obtenerTodosLosSectores(Connection conn) throws SQLException {
    	String query = "SELECT id, descripcion FROM sectores ORDER BY id";
    	List l = new LinkedList();
    	ResultSet rs = DataAccess.selectQueryStatic(conn, query);
    	while (rs.next())
    	{
    		int id = rs.getInt("id");;
    		String descripcion = rs.getString("descripcion");
    		l.add(new Sector(conn,id,descripcion));
    	}
    	return(l);
    }
    
    public String toString()
    {
        return getId() + ", " + getDescripcion();
    }
}
